草庐IT

c++ - 实现安全的 nullptr

全部标签

c - 从窗口中删除按钮

我使用C++创建了一个具有“WNDCLASS”结构的窗口。然后,我再次将“CreateWindow”与系统类“button”一起使用,并将父句柄设置为已创建窗口的句柄。如何从窗口中删除此按钮?我试过调用“DestroyWindow”函数,但没有任何反应。如果我不能,有没有办法完全删除窗口并在没有按钮的情况下重新绘制所有内容,这样它就不会出现?#include#includeHWNDclientwindow;RECTwr;LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam){switch(messag

c++ - 有关虚拟文件夹的文档

我正在寻找有关如何制作虚拟文件夹的WindowsAPI文档。我将制作我自己的文件系统,并希望在该文件系统的“计算机”下有一个图标。我见过其他具有此类解决方案的程序,例如允许我在Explorer程序中探索Linux文件系统的程序。很像我要制作的相同解决方案。我还没有找到任何关于如何执行此操作的文档,或者我在搜索错误的东西吗?谢谢。 最佳答案 您正在寻找Shell命名空间扩展。文档的入口点是CreatingShellDataSourceObjectsandExtendingtheShellNamespace.可以在codeplex上找到

windows - Windows程序文件夹中全局可写批处理文件的安全问题

我有个小问题。通常我是一名Linux开发人员,但目前我必须为Windows7和8进行开发。一般来说这不是问题,但显然我在这个平台上缺乏一些认真的经验。我的问题:我的营销人员想要强制我在我们程序的安装文件夹中添加一个全局可写的批处理文件。在Linux下是一个可怕的想法。在Windows下可能不是一个更好的主意。但这里的风险到底是什么?我需要一些很好的论据来反对它。或者……不太可能……“没问题,继续”。 最佳答案 几乎完全符合您的期望。如果您的应用程序调用该批处理文件,那么任何用户都可以将命令放入其中以运行您的应用程序的用户的权限运行。

c - wdm.h中类型名称 'R'中的 'PRKMUTEX'是什么意思?

从wdm.h中摘录的一个简短示例typedefstruct_KMUTANT{DISPATCHER_HEADERHeader;LIST_ENTRYMutantListEntry;struct_KTHREAD*OwnerThread;BOOLEANAbandoned;UCHARApcDisable;}KMUTANT,*PKMUTANT,*PRKMUTANT,KMUTEX,*PKMUTEX,*PRKMUTEX;我知道“P”是指“指针”,但我不知道“R”是什么意思。有什么解释吗? 最佳答案 R将指针标识为restrictedpointer.

C 中的跨平台目录路径验证(Linux 和 Windows)

我有一个接受目录路径作为字符串的C函数。该函数在给定路径处创建一个目录。intcreate_directory(constchar*path){//givenpathmaybeabsoluteorrelative//step1:-needtovalidatethegivenpath(crossplatformforbothLinuxandwindows)//whatarethecriteriaforpathvalidation?//step2:-checkpermissionaboutuseraccessibility,meanscannotcreatedirectory,ifpath

c - 为什么这个 C 程序在 Windows 上编译时显示不同的输出?

现在,我正在ProjectEuler.net上做一些问题,这是我为问题#4编写的代码:#include#include#include#include#include#include#includeintisPalindrome(intnum){intlength=floor(log10(abs(num)))+1;intindex=0;intfirstChar,lastChar;while(index99;x--){for(y=999;y>99;y--){if(isPalindrome(x*y)&&x*y>result){result=x*y;printf("Foundpalindro

c - 获取 CPU 型号名称、供应商 ID、Windows C 中的物理处理器数量

我看到了this主题,但我没有提供我需要的所有信息。是否有任何可移植的方式(仅限所有Windows的可移植)来获取cpu型号名称、供应商ID和物理处理器的数量? 最佳答案 您提供的链接适用于Windows的移动版本,因此如果您所说的可移植版本也指桌面版本,那么GetSystemInfo可用于(如所述)Window2000及更高版本的所有版本。如果您需要比这更旧的版本,那么您应该给出一些限制。 关于c-获取CPU型号名称、供应商ID、WindowsC中的物理处理器数量,我们在StackOv

c - Windows 上的 gcc 生成垃圾? Windows 与 Linux

我想找出为什么在Windows中对同一程序的指令比在Linux中多得多。所以我只用了inta=0xbeef;和printf("test\n");在C中并在Linux和Windows中编译。当我调试和反汇编主机时,我得到了这个:在Linux上:0x080483e4:push%ebp0x080483e5:mov%esp,%ebp0x080483e7:and$0xfffffff0,%esp0x080483ea:sub$0x20,%esp0x080483ed:movl$0xbeef,0x1c(%esp)0x080483f5:movl$0x80484d0,(%esp)0x080483fc:cal

c - RegQueryValueEx()读取REG_DWORD时总是在*lpData中填0

我对RegQueryValueEx()函数有疑问当我使用它时,它用0填充*lpDataLONGWINAPIRegQueryValueEx(_In_HKEYhKey,_In_opt_LPCTSTRlpValueName,_Reserved_LPDWORDlpReserved,_Out_opt_LPDWORDlpType,_Out_opt_LPBYTElpData,_Inout_opt_LPDWORDlpcbData);这是不起作用的代码#include#includeintmain(){HKEYhKey=NULL;DWORDdata=42;DWORDtype=REG_DWORD;DWOR

c# - 如何仅通过 Win32 API 实现 .NET Process.Exited 事件

在C#上,很容易检测到特定进程ID是否已退出。Processp=Process.GetProcessById(pid);p.Exited+=newEventHandler(OnExited);如果只用Win32API写出与此相同的操作,我该怎么办? 最佳答案 您执行此操作的方式与.NETProcess类执行此操作的方式完全相同。使用RegisterWaitForSingleObject()在进程句柄上。当句柄收到信号(即进程完成)或可选超时到期时,您的回调将运行。请记住,与.NET一样,回调在theadpool线程上运行,因此需要适